package pe.com.cotelasa.scp.seguridad.modelo;

import java.util.List;

import pe.com.cotelasa.scp.dominio.excepcion.ModelExcepcion;
import pe.com.cotelasa.scp.entidad.Empresa;
import pe.com.cotelasa.seguridad.entidad.Rol;
import pe.com.cotelasa.seguridad.entidad.Usuario;

public interface UsuarioModel {

    public Usuario obtenerUsuario(Integer id) throws ModelExcepcion;

    public List<Usuario> buscarListaUsuariosActivos(Usuario beanUsuario) throws ModelExcepcion;

    public void guardarUsuario(Usuario beanUsuario, List<Empresa> listaBeanEmpresa, boolean esCodificarContrasena) throws ModelExcepcion;

    public void actualizarUsuario(Usuario beanUsuario, List<Empresa> listaBeanEmpresa, boolean esCodificarContrasena) throws ModelExcepcion;
    
    public Object validarUsuario(Usuario beanUsuario) throws ModelExcepcion;

    public void eliminarUsuario(Integer idUsuario) throws ModelExcepcion;

    public List<Rol> listaRolesActivos() throws ModelExcepcion;

    public List<Empresa> lisaEmpresasActivas() throws ModelExcepcion;

    public List<List<Empresa>> obtenerDualListasEmpresasPorUsuario(Integer idUsuario) throws ModelExcepcion;

    public void enviarCorreoUsuario(Usuario beanUsuario, String nuevaContracena) throws ModelExcepcion;
}
